package cc.linker.steplink.crm.merchanth5.service.acs;

import cc.linker.steplink.crm.merchanth5.pojo.WithdrawTaskPo;
import com.alibaba.fastjson.JSONObject;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.*;

public interface MerchantWalletService {

    Map<String, Object> walletInfo(String customerId);

    Integer mobileCount(String phone, String customerId);

    JSONObject addAccount(Map<String, String> params) throws Exception;

    Map<String, Object> getWithDraw(String customerId) throws Exception;

    JSONObject addBank(Map<String, String> params) throws Exception;

    JSONObject activeBank(Map<String, String> params) throws Exception;

    Map<String, Object> getGoldCoin(String customerId);

    Map<String, String> addWithDraw(Map<String, Object> params);

    /**
     * 查询头寸金额
     *
     * @param clintType
     * @return
     */
    Long queryReserveFundBalance(String clintType);

    /* 下发提现
     *  params：withdrawTaskPo 提现任务实体类
     *  params：isTask 是否任务调用  false 不是 true 是
     * */
    Boolean sendWithdaw(WithdrawTaskPo withdrawTaskPo, Map<String, Object> insertWithdrawBillMap, Boolean isTask);

    Map<String, Object> getWithDrawDetail(Map<String, Object> params);

    List<Map<String, Object>> detailList(String customerId);

    List<Map<String, Object>> coinList(String customerId);

    Object capitalAccountApply(Map<String, Object> param) throws Exception;

    Boolean sendVerificationCode(Map param) throws IOException, URISyntaxException;

    Map tosigncontract(Map<String, String> param) throws IOException, URISyntaxException;

    Map changePhone(Map<String, String> param) throws IOException, URISyntaxException;

    /**
     * flag 是否需要验证手机号
     *
     * @param map
     * @return
     */
    Map<String, Object> accountStatus(Map<String, Object> map);

    Map setRealName(Map<String, String> params);

    Map<String, Object> getRefundDetail(Map<String, Object> params);

    List<Map<String, Object>> getSettlementDetail(String customerId);

    List<Map<String, Object>> getScoreSettlementDetail(String customerId);

    /**
     * 提现前的转账
     *
     * @param amount     转账金额
     * @param clintType  平台别名
     * @param customerId 用户ID
     * @param orderSn    平台订单ID
     */
    Boolean transferBeforeWithdrawal(String amount, String clintType, String customerId, String orderSn);
}
